<?php
/**
 * 验证IP地址
 */
class IpValidator extends AbstractValidator
{	
	/**
	 * IP类型，IPv4或者IPv6，默认为IPv4
	 * @var string
	 */
	public $ipType='IPv4';
	/**
	 * 验证内网IP
	 * @var boolean
	 */
	public $isLocalIP=false;
	/**
	 * 验证外网IP
	 * @var boolean
	 */
	public $isRemoteIP=false;
	/**
	 * 是否允许为空 
	 * @var boolean
	 */
	public $allowEmpty=true;
		
	/**
	 * 验证方法
	 * @param string $label  显示在页面的名称
	 * @param mix $value 要验证的值
	 */	
	public function validate($label,$value){
		if($this->allowEmpty && $this->isEmpty($value))
			return true;
		if($this->ipType=='IPv4'){
			if($this->isLocalIP){
				if(filter_var($value,FILTER_VALIDATE_IP,FILTER_FLAG_NO_PRIV_RANGE)===false) return true;
			}else if($this->isRemoteIP){
				if(filter_var($value,FILTER_VALIDATE_IP,FILTER_FLAG_NO_PRIV_RANGE)!==false) return true;
			}else{
				if(filter_var($value,FILTER_VALIDATE_IP)!==false) return true;
			}
		}else{
			if(filter_var($value,FILTER_VALIDATE_IP,FILTER_FLAG_IPV6)!==false) return true;
		}
		return $this->message($label);
	}
	/**
	 * 验证失败的信息
	 * @param string $label
	 */
	public function message($label){		
		if($this->language==='cn'){
			return '请输入正确的'.$label;
		}		
	}

}
